home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Software Contest 3 / FM Towns Software Contest 3.iso / exp / bpp / no1 / bppus.xx < prev    next >
Text File  |  1994-01-07  |  5KB  |  110 lines

  1. .ac
  2. BPP
  3.  
  4. BASIC Pre-Processor
  5.  
  6. Version 0.90
  7.  
  8. ユーザーズマニュアル
  9.  
  10.  
  11.  
  12.  
  13. ------  目次  ------
  14.  
  15. 0. BPPとは        - 2 -
  16. 1. BPPの使用法      - 3 -
  17. 2. 使用上の制限・注意点    - 4 -
  18. 3. おわりに                  - 5 -
  19. .ac-
  20.  
  21. shaji  0.BPPとは sowa
  22.  
  23.  
  24.     BPPは、「BASIC Pre-Processor」の略で、ベーシックで構造化プログラミングを行うための変換ツールです。BPPは以下のような機能をBASICに付加します。
  25.         ・行番号の無い構造化プログラミング
  26.         ・再帰ローカル変数をサポートしたサブルーチン定義
  27.         ・Cライクなマクロ定義、条件変換(条件コンパイルもどき)
  28.     もちろんBASICの便利で使い慣れた命令、関数がほとんどそのまま利用でき、インタプリタにもコンパイラにも使用できます。
  29.  
  30. 《 ブロック構文のサポート 》
  31.  
  32.     BASIC本来のFOR~NEXT、WHILE~WENDに加え、ブロックIF、DO~LOOPの構文もサポートしています。
  33.     ループを抜け出すBREAK命令も追加されています。
  34.  
  35. 《 サブルーチン定義 》
  36.  
  37.     SUBROUTINE(A,B,C)のように、パラメータの受け渡しを伴うサブルーチンを定義できます。このユーザー定義サブルーチンの中ではローカル変数が利用でき、再帰呼び出しも可能です。
  38.  
  39. 《 Cライクなマクロ定義 》
  40.  
  41.     Cのプリプロセッサ機能のうち、#DEFINEと#IFDEF/#IFNDEF~#ENDIFの構文をサポートしました。高度なマクロ置換、条件コンパイル(?)が手軽に利用できます。
  42.  
  43. shaji  1.BPPの使用法  sowa
  44.  
  45.  
  46.     (1)変換するプログラムソースを用意します
  47.  
  48.         プログラムは拡張子が .BPP で、MS-DOS(TOWNS OS)標準のテキストファイルの形式です。システム付属あるいは市販のエディタ等で編集してください。
  49.  
  50.     (2)BPPを使ってプログラムを変換します
  51.  
  52.         変換するファイル名を尋ねてきますので、キーボードから入力して答えてください。拡張子は省略しても構いません。
  53.  
  54.  
  55.     (3)変換が終わるまで待ちます
  56.  
  57.         変換には予想外に時間がかかることがありますので、コーヒーでも飲んで一休みしてください。その方がデバッグの効率もよくなります(^_^;)。
  58.  
  59.  
  60.     (4)出来上がったBASICプログラムを実行します
  61.  
  62.         BPPが出力するプログラムはアスキー形式ですので、デバッグが終わったらバイナリ形式にセーブし直すと以後のロード時間が短縮できます。出来上がったプログラムが正常に動作しない場合には、(1)に戻ってデバッグし、変換をやり直してください。
  63.  
  64. shaji  2.使用上の制限・注意点  sowa
  65.  
  66.  
  67.     a.エラー処理
  68.  
  69.         大変申し訳ない話ですが、BPPの内部ではエラー処理をまともに行っていません。従って入力のソースファイルに文法的なミスがあると動作不安定に陥ります。言語処理系のエラー処理は大変繁雑なため、時には不要なバグを生みかねないからです・・・というのは言い訳で、明らかに手抜きです。今後の課題としたいと思います。
  70.  
  71.  
  72.     b.数量的制限
  73.  
  74.         BPPでは、各処理において次のような数量的制限があります。
  75.  
  76.                  項  目          上限      定義変数
  77.         ---------------------------------  ----------  --------------
  78.         ソースファイルの大きさ             OSに依存
  79.         プロシージャ                           128  MAXSUB
  80.         プロシージャの引数                       32  MAXSUBPARAM
  81.         制御構文のネスト                         32  MAXBLOCKNEST
  82.         ローカル変数(プロシージャ当たり)         64  MAXLVAR
  83.         マクロ定義                             256  MAXMACRO
  84.         マクロ引数                               16  MAXMACROPARAM
  85.         #IFDEF/#IFNDEFのネスト             整数の上限
  86.         #INCLUDEのネスト                      16  MAXINCLUDENEST
  87.  
  88.         ただし、#INCLUDEのネストはBASICの制限により実際には13までです。それ以外は、BPP.BAS 内の定義変数の値を変更することによって上限値を変えることができます。
  89.  
  90.     c.大文字・小文字の区別
  91.  
  92.         BPPでは、「"」(ダブルクォーテーション)で囲まれた部分以外において、英小文字を英大文字に変換します(BASICと同じです)。従ってBPPへの命令は大文字でも小文字でも構いません。C言語とは異なり、マクロ定義についても大文字小文字は区別されません。
  93.  
  94. shaji  3.あとがき  sowa
  95.  
  96.  
  97.      ふう、疲れた(;_;) ・・・やっと動いた・・・。
  98.  
  99.      BASICはとてもよい言語です。思ったことをすぐに実行して確かめる、というのはインタプリタならではですね。けれどもBASICは構造化が十分になされていないので大きなプログラムや複雑なアルゴリズムを書くには不向きです。特にローカル変数が使えないのは、一度CやPASCALを使ったことのある人にとっては耐えられないところだと思います。
  100.      だったらCやPASCALを使えばいいのですが、さっきも言ったようにBASICには永年の愛着がありますし、TOWNSにおいては「手元にBASICしかない」という状況なのでそうも行きません。
  101.      そこで一挙問題の解決を図ったのが、このBPPです。BASICでローカル変数やプロシージャやブロック構文が使えたら、プログラムを組むのが楽になるなあ。そうしたら自ずとよいプログラムが書けるに違いない。そうなると必然的にこのコンテストに出品するプログラムも良いものができる、そんな風にもくろんで開発を始めたわけです。
  102.      ところがこのBPP、一見するよりずっと難産でした。BPPとBASICの仕事の線引きがなかなかはっきりしなかったり、ローカル変数の扱い方で悩んだり、なかなか難しいものです。
  103.      そうこうしているうちに、もう締め切りが目前。というわけで、本来ひとに見せるつもりのなかった作品をお送りすることになりました。
  104.      みなさんこのBPPを活用して、来年のコンテストに備えましょう(^_^;)。
  105.      その際のご感想等お聞かせいただければ幸いです。
  106.  
  107.                             大阪教育大学教育学部付属高等学校平野校舎CMC
  108.                             プログラム・マニュアル製作担当 中橋一朗 (TmSof)
  109.  
  110.